pub type HITLS_Lib_Ctx = ::std::os::raw::c_void;
pub type HITLS_CRYPT_Key = ::std::os::raw::c_void;
pub type HITLS_HASH_Ctx = ::std::os::raw::c_void;
pub type HITLS_HMAC_Ctx = ::std::os::raw::c_void;
pub type HITLS_Cipher_Ctx = ::std::os::raw::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct BslList {
    _unused: [u8; 0],
}
pub type HITLS_CIPHER_List = BslList;
pub const HITLS_AEAD_CIPHER: HITLS_CipherType = 0;
pub const HITLS_CBC_CIPHER: HITLS_CipherType = 1;
pub const HITLS_CIPHER_TYPE_BUTT: HITLS_CipherType = 255;
pub type HITLS_CipherType = ::std::os::raw::c_uint;
pub const HITLS_CIPHER_NULL: HITLS_CipherAlgo = 1001;
pub const HITLS_CIPHER_AES_128_CBC: HITLS_CipherAlgo = 19;
pub const HITLS_CIPHER_AES_256_CBC: HITLS_CipherAlgo = 27;
pub const HITLS_CIPHER_AES_128_GCM: HITLS_CipherAlgo = 299;
pub const HITLS_CIPHER_AES_256_GCM: HITLS_CipherAlgo = 301;
pub const HITLS_CIPHER_AES_128_CCM: HITLS_CipherAlgo = 311;
pub const HITLS_CIPHER_AES_256_CCM: HITLS_CipherAlgo = 313;
pub const HITLS_CIPHER_AES_128_CCM8: HITLS_CipherAlgo = 5301;
pub const HITLS_CIPHER_AES_256_CCM8: HITLS_CipherAlgo = 5302;
pub const HITLS_CIPHER_CHACHA20_POLY1305: HITLS_CipherAlgo = 2030;
pub const HITLS_CIPHER_SM4_CBC: HITLS_CipherAlgo = 344;
pub const HITLS_CIPHER_SM4_GCM: HITLS_CipherAlgo = 2033;
pub const HITLS_CIPHER_SM4_CCM: HITLS_CipherAlgo = 5304;
pub const HITLS_CIPHER_BUTT: HITLS_CipherAlgo = 0;
pub type HITLS_CipherAlgo = ::std::os::raw::c_uint;
pub const HITLS_HASH_NULL: HITLS_HashAlgo = 1001;
pub const HITLS_HASH_MD5: HITLS_HashAlgo = 40;
pub const HITLS_HASH_SHA1: HITLS_HashAlgo = 41;
pub const HITLS_HASH_SHA_224: HITLS_HashAlgo = 42;
pub const HITLS_HASH_SHA_256: HITLS_HashAlgo = 43;
pub const HITLS_HASH_SHA_384: HITLS_HashAlgo = 44;
pub const HITLS_HASH_SHA_512: HITLS_HashAlgo = 45;
pub const HITLS_HASH_SM3: HITLS_HashAlgo = 290;
pub const HITLS_HASH_BUTT: HITLS_HashAlgo = 0;
pub type HITLS_HashAlgo = ::std::os::raw::c_uint;
pub const HITLS_MAC_NULL: HITLS_MacAlgo = 1001;
pub const HITLS_MAC_MD5: HITLS_MacAlgo = 46;
pub const HITLS_MAC_1: HITLS_MacAlgo = 47;
pub const HITLS_MAC_224: HITLS_MacAlgo = 48;
pub const HITLS_MAC_256: HITLS_MacAlgo = 49;
pub const HITLS_MAC_384: HITLS_MacAlgo = 50;
pub const HITLS_MAC_512: HITLS_MacAlgo = 51;
pub const HITLS_MAC_SM3: HITLS_MacAlgo = 291;
pub const HITLS_MAC_AEAD: HITLS_MacAlgo = 5300;
pub const HITLS_MAC_BUTT: HITLS_MacAlgo = 0;
pub type HITLS_MacAlgo = ::std::os::raw::c_uint;
pub const HITLS_AUTH_NULL: HITLS_AuthAlgo = 0;
pub const HITLS_AUTH_RSA: HITLS_AuthAlgo = 1;
pub const HITLS_AUTH_ECDSA: HITLS_AuthAlgo = 2;
pub const HITLS_AUTH_DSS: HITLS_AuthAlgo = 3;
pub const HITLS_AUTH_PSK: HITLS_AuthAlgo = 4;
pub const HITLS_AUTH_SM2: HITLS_AuthAlgo = 5;
pub const HITLS_AUTH_ANY: HITLS_AuthAlgo = 6;
pub const HITLS_AUTH_BUTT: HITLS_AuthAlgo = 255;
pub type HITLS_AuthAlgo = ::std::os::raw::c_uint;
pub const HITLS_KEY_EXCH_NULL: HITLS_KeyExchAlgo = 0;
pub const HITLS_KEY_EXCH_ECDHE: HITLS_KeyExchAlgo = 1;
pub const HITLS_KEY_EXCH_DHE: HITLS_KeyExchAlgo = 2;
pub const HITLS_KEY_EXCH_ECDH: HITLS_KeyExchAlgo = 3;
pub const HITLS_KEY_EXCH_DH: HITLS_KeyExchAlgo = 4;
pub const HITLS_KEY_EXCH_RSA: HITLS_KeyExchAlgo = 5;
pub const HITLS_KEY_EXCH_PSK: HITLS_KeyExchAlgo = 6;
pub const HITLS_KEY_EXCH_DHE_PSK: HITLS_KeyExchAlgo = 7;
pub const HITLS_KEY_EXCH_ECDHE_PSK: HITLS_KeyExchAlgo = 8;
pub const HITLS_KEY_EXCH_RSA_PSK: HITLS_KeyExchAlgo = 9;
pub const HITLS_KEY_EXCH_ECC: HITLS_KeyExchAlgo = 10;
pub const HITLS_KEY_EXCH_BUTT: HITLS_KeyExchAlgo = 255;
pub type HITLS_KeyExchAlgo = ::std::os::raw::c_uint;
pub const HITLS_SIGN_RSA_PKCS1_V15: HITLS_SignAlgo = 34;
pub const HITLS_SIGN_DSA: HITLS_SignAlgo = 35;
pub const HITLS_SIGN_ECDSA: HITLS_SignAlgo = 36;
pub const HITLS_SIGN_RSA_PSS: HITLS_SignAlgo = 336;
pub const HITLS_SIGN_ED25519: HITLS_SignAlgo = 334;
pub const HITLS_SIGN_SM2: HITLS_SignAlgo = 296;
pub const HITLS_SIGN_BUTT: HITLS_SignAlgo = 255;
pub type HITLS_SignAlgo = ::std::os::raw::c_uint;
pub const HITLS_EC_CURVE_TYPE_NAMED_CURVE: HITLS_ECCurveType = 3;
pub const HITLS_EC_CURVE_TYPE_BUTT: HITLS_ECCurveType = 255;
pub type HITLS_ECCurveType = ::std::os::raw::c_uint;
pub const HITLS_EC_GROUP_SECP256R1: HITLS_NamedGroup = 23;
pub const HITLS_EC_GROUP_SECP384R1: HITLS_NamedGroup = 24;
pub const HITLS_EC_GROUP_SECP521R1: HITLS_NamedGroup = 25;
pub const HITLS_EC_GROUP_BRAINPOOLP256R1: HITLS_NamedGroup = 26;
pub const HITLS_EC_GROUP_BRAINPOOLP384R1: HITLS_NamedGroup = 27;
pub const HITLS_EC_GROUP_BRAINPOOLP512R1: HITLS_NamedGroup = 28;
pub const HITLS_EC_GROUP_CURVE25519: HITLS_NamedGroup = 29;
pub const HITLS_EC_GROUP_SM2: HITLS_NamedGroup = 41;
pub const HITLS_FF_DHE_2048: HITLS_NamedGroup = 256;
pub const HITLS_FF_DHE_3072: HITLS_NamedGroup = 257;
pub const HITLS_FF_DHE_4096: HITLS_NamedGroup = 258;
pub const HITLS_FF_DHE_6144: HITLS_NamedGroup = 259;
pub const HITLS_FF_DHE_8192: HITLS_NamedGroup = 260;
pub const HITLS_HYBRID_X25519_MLKEM768: HITLS_NamedGroup = 4588;
pub const HITLS_HYBRID_ECDH_NISTP256_MLKEM768: HITLS_NamedGroup = 4587;
pub const HITLS_HYBRID_ECDH_NISTP384_MLKEM1024: HITLS_NamedGroup = 4589;
pub const HITLS_NAMED_GROUP_BUTT: HITLS_NamedGroup = 65535;
pub type HITLS_NamedGroup = ::std::os::raw::c_uint;
pub const HITLS_POINT_FORMAT_UNCOMPRESSED: HITLS_ECPointFormat = 0;
pub const HITLS_POINT_FORMAT_BUTT: HITLS_ECPointFormat = 255;
pub type HITLS_ECPointFormat = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct HITLS_ECParameters {
    pub type_: HITLS_ECCurveType,
    pub param: HITLS_ECParameters__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union HITLS_ECParameters__bindgen_ty_1 {
    pub prime: *mut ::std::os::raw::c_void,
    pub char2: *mut ::std::os::raw::c_void,
    pub namedcurve: HITLS_NamedGroup,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct HITLS_CipherParameters {
    pub type_: HITLS_CipherType,
    pub algo: HITLS_CipherAlgo,
    pub key: *const u8,
    pub keyLen: u32,
    pub iv: *const u8,
    pub ivLen: u32,
    pub aad: *mut u8,
    pub aadLen: u32,
    pub hmacKey: *const u8,
    pub hmacKeyLen: u32,
    pub ctx: *mut *mut HITLS_Cipher_Ctx,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct HITLS_Sm2GenShareKeyParameters {
    pub tmpPriKey: *mut HITLS_CRYPT_Key,
    pub tmpPeerPubkey: *mut u8,
    pub tmpPeerPubKeyLen: u32,
    pub priKey: *mut HITLS_CRYPT_Key,
    pub peerPubKey: *mut HITLS_CRYPT_Key,
    pub isClient: bool,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct HITLS_CRYPT_HkdfExtractInput {
    pub hashAlgo: HITLS_HashAlgo,
    pub salt: *const u8,
    pub saltLen: u32,
    pub inputKeyMaterial: *const u8,
    pub inputKeyMaterialLen: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct HITLS_CRYPT_HkdfExpandInput {
    pub hashAlgo: HITLS_HashAlgo,
    pub prk: *const u8,
    pub prkLen: u32,
    pub info: *const u8,
    pub infoLen: u32,
}
